Перейти к основному содержимому

4.10. Основные принципы ORM

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Основные принципы ORM

Маппинг сущностей (классов) на таблицы

Маппинг – это процесс связывания объектов программы с таблицами в базе данных. Сам по себе маппинг происходит от слова map - карта, когда берётся одна сущность, и данные из неё преобразуются в другую.

Класс - таблица. Каждый класс в программе соответствует таблице в базе данных. Имя класса обычно совпадает с именем таблицы, а свойства класса (атрибуты) соответствуют столбцам таблицы.

Объект - строка. Экземпляр класса (объект) представляет собой строку в таблице. Значения свойств объекта сохраняются в ячейках строки. В современных ORM часто используются аннотации или декораторы для указания дополнительных параметров маппинга - первичный ключ (id), индексы и ограничения (например, NOT NULL).


CRUD-операции через объекты

ORM предоставляет методы для выполнения стандартных операций с данными (CRUD), которые автоматически преобразуются в SQL-запросы. Создание нового объекта в программе приводит к добавлению строки в таблицу.

Чтение данных из базы происходит через запросы к объектам.

Изменение свойств объекта приводит к обновлению соответствующей строки в таблице.

Удаление объекта из программы приводит к удалению строки из таблицы.


Работа с отношениями (один-к-одному, один-ко-многим, многие-ко-многим)

ORM позволяет работать с отношениями между таблицами через связи между объектами.

Типы отношений:

  • Один-к-одному (One-to-One) - одна запись в таблице связана с одной записью в другой таблице.
  • Один-ко-многим (One-to-Many) - одна запись в таблице связана с несколькими записями в другой таблице.
  • Многие-ко-многим (Many-to-Many) - несколько записей в одной таблице связаны с несколькими записями в другой таблице.

ORM автоматически создаёт промежуточные таблицы для отношений «многие-ко-многим» и управляет внешними ключами для «один-ко-многим».


Транзакции и управление состоянием объектов

Транзакция – это набор операций, которые должны быть выполнены как единое целое. Если хотя бы одна операция завершается с ошибкой, все изменения откатываются.

ORM предоставляет инструменты для управления транзакциями, отслеживая состоянием объектов, чтобы определить, какие изменения нужно применить к базе данных:

  • Transient (временный) - объект создан, но ещё не связан с БД;
  • Persistent (постоянный) - объект сохранён в БД;
  • Detached (отсоединённый) - объект был сохранён, но больше не связан с текущей сессией;
  • Deleted (удалённый) - объект удалён из БД.